struct function
{
    struct _
    {
    template< class ,class=void>
    struct app_matching;

    template<class BridgeEager45344>
    //eager bridge 
    struct app:app_matching< typename BridgeEager45344::value > {}; 

      template< class dummy_0>
      struct app_matching< Int<0>, dummy_0>  //Matching Nivel 1
      {
        struct _
        {
        template< class ,class=void>
        struct app_matching;

        template<class BridgeEager45344>
        //eager bridge 
        struct app:app_matching< typename BridgeEager45344::value > {}; 

          template< class dummy_1_>
          struct app_matching< Int<0>, dummy_1>   //Matching Nivel 2
          {
            struct _
            {
            template< class ,class=void>
            struct app_matching;

            template<class BridgeEager45344>
            //eager bridge 
            struct app:app_matching< typename BridgeEager45344::value > {}; 

              template< class dummy_2>
              struct app_matching< Int<1>, dummy_2> //Matching Nivel 3
              {
                  struct _:  Int<0> 
                  {
                  typedef Int<0> ::value value;
                  };
              };
              template< class a, class>            //Matching Nivel 3
              struct app_matching
              {
                  struct _:  Int<0> 
                  {
                  typedef Int<0> ::value value;
                  };
              };
            };
          };
        };
      };
      template< class dummy_3>
      struct app_matching< Int<2>, dummy_3> //Matching Nivel 1
      {
        struct _
        {
          template< class x, class=void>      //Matching Nivel 2
          struct app
          {
            struct _
            {
              template< class a, class=void>     //Matching Nivel 3
              struct app
              {
                  struct _:  Int<0> 
                  {
                  typedef Int<0> ::value value;
                  };
              };
            };
          };
        };
      };
      template< class y, class>  //Matching Nivel 1
      struct app_matching
      {
        struct _
        {
          template< class x, class=void>  //Matching Nivel 2
          struct app
          {
            struct _
            {
              template< class a, class=void> //Matching Nivel 3
              struct app
              {
                  struct _:  Int<0> 
                  {
                  typedef Int<0> ::value value;
                  };
              };
            };
          };
        };
      };
    };
};

